package com.quecomohoy.datos;

import java.sql.*;
import java.util.*;
import com.quecomohoy.entidades.*;

public class datPlato
{
	//Singleton
	public static datPlato _Instancia;
		
	private datPlato(){}
		
	public static datPlato Instancia()
	{
		if(_Instancia==null)
		{
			_Instancia = new datPlato();			
		}
		return _Instancia;
	}	
	
	//Metodos
	public ArrayList<entPlato> ListadoPlatos() throws Exception
	{
		Connection cn = datConexion.getConexion();
		try
		{
			ArrayList<entPlato> Listado = new ArrayList<entPlato>();
			CallableStatement cst = cn.prepareCall("{call sp_ListarPlatos()}");
			ResultSet tabla = cst.executeQuery();
			while(tabla.next())
			{
				entPlato p = new entPlato();
				p.setIdPlato(tabla.getInt("IdPlato"));
				p.setNombre(tabla.getString("Nombre"));
				p.setFoto(tabla.getString("Foto"));
				Listado.add(p);
			}
			return Listado;
		}
		catch(Exception e)
		{
			throw e;
		}
		finally
		{
			cn.close();
		}		
	}
	
	public int InsertarPlato(String cadXML) throws Exception
	{
		Connection cn = datConexion.getConexion();
		try
		{
			CallableStatement cst = cn.prepareCall("{call sp_InsertarPlato(?, ?)}");
			cst.setString(1, cadXML);
			cst.setInt(2, 0);
			cst.registerOutParameter("respuesta", Types.INTEGER);
			cst.executeUpdate();
			int ok = cst.getInt("respuesta");
			return ok;
		}
		catch(Exception e)
		{			
			throw e;
		}
		finally
		{
			cn.close();
		}
	}
	
	public entPlato BuscarPlato(int idPlato) throws Exception
	{
		Connection cn = datConexion.getConexion();
		try
		{
			CallableStatement cst = cn.prepareCall("{call sp_BuscarPlato(?)}");
			cst.setInt(1,idPlato);
			ResultSet tabla = cst.executeQuery();
			entPlato p = new entPlato();
			if(tabla.next())
			{
				p.setIdPlato(tabla.getInt("IdPlato"));
				p.setNombre(tabla.getString("Nombre"));
				p.setFoto(tabla.getString("Foto"));
				p.setEstado(tabla.getBoolean("Estado"));
			}
			return p;
		}
		catch(Exception e)
		{
			throw e;
		}
		finally
		{
			cn.close();
		}		
	}
}